import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.launch

suspend fun main() {
    val scope = CoroutineScope(Dispatchers.IO)
    scope.launch {
        //     创建通道（默认容量为0，即 rendezvous 通道）
        val channel = Channel<String>()

        // 消费者协程：从通道接收数据
        launch {
            for (data in channel) { // 迭代接收，通道关闭后退出
                println("消费者：收到数据：$data")
                if (data == "exit") break
            }
        }

        // 生产者协程：向通道发送数据
        launch {
            listOf("First", "Second", "Third", "exit").forEach { data ->
                channel.send(data) // 挂起等待，直到消费者接收
                println("生产者：发送数据：$data")
                delay(500) // 模拟间隔
            }
            channel.close() // 关闭通道（可选）
        }
    }

    delay(15000)
}

